package zhtt.oneToMany2;

import org.junit.Test;
import zhtt.JunitTestUtil;

import java.util.HashSet;
import java.util.Set;

/**
 * Created by zhtt on 2017/4/11.
 * country的配置文件中，将控制返回设为true（inverse="true"）
 * 此时保存时，多方表中一方的id为空
 */
public class JunitTest2 extends JunitTestUtil {

    @Test
    /**
     * 插入语句未执行
     * 相互set
     */
    public void save1(){
        try{
            session.beginTransaction();
            Minister m=new Minister("minister"+Math.random());
            Set<Minister> ministerSet=new HashSet<Minister>();
            ministerSet.add(m);
            Country country=new Country("country"+Math.random());
            m.setCountry(country);
            country.setMinisterSet(ministerSet);
            session.save(m);/** 数据库中只能插入【 minister 】 **/
            session.getTransaction().commit();
        }catch (Exception e){}
    }

    @Test
    /** 1、插入【country】，
     * 2、插入【 minister 】
     * 单向set（counter set minister）
     * ###############数据库中【minister】的country_id值为NULL#############
     * **/
    public void save2(){
        try{
            session.beginTransaction();
            Minister minister=new Minister("minister"+Math.random());
            Country country=new Country("country"+Math.random());
            Set<Minister> ministerSet=new HashSet<Minister>();
            ministerSet.add(minister);
            country.setMinisterSet(ministerSet);
            session.save(country);
            session.getTransaction().commit();
        }catch (Exception e){
            session.getTransaction().rollback();
        }
    }

    @Test
    /** 1、插入【country】，
     * 2、插入【 minister 】，
     * 相互set
     * ###############数据库中【minister】的country_id值为NULL#############
     * **/
    public void save3(){
        try{
            session.beginTransaction();
            session.clear();
            Minister m=new Minister("minister"+Math.random());
            Country country=new Country("country"+Math.random());
            Set<Minister> ministerSet=new HashSet<Minister>();
            ministerSet.add(m);
            m.setCountry(country);
            country.setMinisterSet(ministerSet);
            session.save(country);
            session.getTransaction().commit();
        }catch (Exception e){}
    }
}
